using System;
using ns27;
using Triton.Game.Mono;

namespace Triton.Game.Mapping
{
	[Attribute38("PoisonSeeds")]
	public class PoisonSeeds : SuperSpell
	{
		[Attribute38("PoisonSeeds.MinionData")]
		public class MinionData : MonoClass
		{
			public GameObject gameObject => method_3<GameObject>("gameObject");

			public Vector3 orgLocPos => method_2<Vector3>("orgLocPos");

			public Quaternion orgLocRot => method_2<Quaternion>("orgLocRot");

			public Vector3 rotationDrift => method_2<Vector3>("rotationDrift");

			public Card card => method_3<Card>("card");

			public MinionData(IntPtr address, string className)
				: base(address, className)
			{
			}

			public MinionData(IntPtr address)
				: this(address, "MinionData")
			{
			}
		}

		public enum SpellTargetType
		{
			None,
			Death,
			Create
		}

		public Spell m_CustomSpawnSpell => method_3<Spell>("m_CustomSpawnSpell");

		public Spell m_CustomDeathSpell => method_3<Spell>("m_CustomDeathSpell");

		public float m_StartDeathSpellAdjustment => method_2<float>("m_StartDeathSpellAdjustment");

		public float m_RotationDriftAmount => method_2<float>("m_RotationDriftAmount");

		public SpellTargetType m_TargetType => method_2<SpellTargetType>("m_TargetType");

		public float m_HeightCurveLength => method_2<float>("m_HeightCurveLength");

		public float m_AnimTime => method_2<float>("m_AnimTime");

		public PoisonSeeds(IntPtr address, string className)
			: base(address, className)
		{
		}

		public PoisonSeeds(IntPtr address)
			: this(address, "PoisonSeeds")
		{
		}

		public new void Awake()
		{
			method_8("Awake");
		}

		public new bool AddPowerTargets()
		{
			return method_11<bool>("AddPowerTargets", Array.Empty<object>());
		}

		public new Card GetTargetCardFromPowerTask(int index, PowerTask task)
		{
			return method_14<Card>("GetTargetCardFromPowerTask", new object[2] { index, task });
		}

		public new void OnAction(SpellStateType prevStateType)
		{
			method_8("OnAction", prevStateType);
		}

		public void DeathEffect()
		{
			method_8("DeathEffect");
		}

		public void ShakeCamera()
		{
			method_8("ShakeCamera");
		}
	}
}
